#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
const int N=110;
const double eps=1e-6;
double a[N][N];
int n;
int gause()
{
    int c=0,r=0;
    for(c=0,r=0;c<n;++c)
    {
        int t=r;
        for(int i=r;i<n;++i)
        {
            if(abs(a[i][c])>abs(a[t][c])) t=i;
        }
        
        if(abs(a[t][c])<eps) continue;
        
        for(int i=c;i<=n;++i) swap(a[r][i],a[t][i]);
        for(int i=n;i>=c;--i) a[r][i]/=a[r][c];
        for(int i=r+1;i<n;++i)
        {
            if(abs(a[i][c])>eps) 
            {
                for(int j=n;j>=c;--j) a[i][j]-=a[r][j]*a[i][c];
            }
        }
        ++r;
    }
    
    if(r<n)
    {
        for(int i=r;i<n;++i)
        {
            if(abs(a[i][n])>eps) return 2;
        }
        retur n 1;
    }
    
    for(int i=n;i>=0;--i)
    {
        for(int j=i+1;j<=n;++j)
        {
            a[i][n]-=a[i][j]*a[j][n];
        }
    }
    return 0;
}

int main()
{
    cin>>n;
    for(int i=0;i<n;++i)
    {
        for(int j=0;j<n+1;++j)
        {
            cin>>a[i][j];
        }
    }
    
    int t=gause();
    if(t==0) {
        for(int i=0;i<n;++i)
        {
            printf("%.2lf\n",a[i][n]);
        }
    }
    else if(t==1)
    {
        cout<<"Infinite group solutions"<<endl;
    }
    else 
    {
        cout<<"No solution"<<endl;
    }
    
    return 0;
}